#!/usr/bin/env python3
# -*- coding:utf-8 -*-

'''
http://www.cnblogs.com/feixuelove1009/p/5823135.html
http://blog.csdn.net/tomonkey/article/details/50922279

1. 安装Django
    pip3 install django;
2. 创建django项目
3. 创建APP
    在每个django项目中可以包含多个APP，相当于一个大型项目中的分系统、子模块、功能部件等等，相互之间比较独立，但也有联系。
    所有的APP共享项目资源。
    在pycharm下方的terminal终端中输入命令：
    python manage.py startapp App_demo_1
    这样就创建了一个叫做App_demo_1的APP，django自动生成“App_demo_1”文件夹。
4. 编写路由
    路由都在urls文件里，它将浏览器输入的url映射到相应的业务处理逻辑。
5. 编写业务处理逻辑
    业务处理逻辑都在views.py文件里。    
6. 运行web服务
    运行web服务命令行的方式是：python manage.py runserver 127.0.0.1:8000
7. 返回HTML文件
    新增index.html文件
    再修改一下views文件
    为了让django知道我们的html文件在哪里，需要修改settings文件的相应内容。但默认情况下，它正好适用，你无需修改。
8. 使用静态文件
    我们已经可以将html文件返还给用户了，但是还不够，前端三大块，html、css、js还有各种插件，它们齐全才是一个完整的页面。
    在django中，一般将静态文件放在static目录中。
    接下来，在templates同级目录中新建一个static目录，你的CSS,JS和各种插件都可以放置在这个目录里。
    为了让django找到这个目录，依然需要对settings进行配置。
    同样，在index.html文件中，可以引入js文件了。
9. 接收用户发送的数据
    使web服务器和用户之间新增动态交互：我们设计一个表单，让用户输入用户名和密码，提交给index这个url，服务器将接收到这些数据。
    先修改前台index.html文件，然后修改后台views.py文件。
    重启web服务时，会出错，因为django有一个csrf跨站请求保护机制，我们暂时在settings文件中将它关闭(47行)，或者在form表单里添加一个`{% csrf_token %}`标签。
10. 返回动态页面
    先修改后台views.py文件，然后修改前台index.html文件。
11. 使用数据库（django通过自带的ORM框架操作数据库，并且自带轻量级的sqlite3数据库）。
    首先在settings中注册app：不注册它，你的数据库就不知道该给哪个app创建表。
    然后我们在settings中，配置数据库相关的参数，如果使用自带的sqlite，不需要修改。
    再编辑models.py文件。
    接下来要在pycharm的teminal中通过命令创建数据库的表了。有2条命令，分别是：python manage.py makemigrations
                                                              再输入命令：python manage.py migrate
    修改views.py中的业务逻辑。

    https://code.ziqiangxuetang.com/django/django-schema-migration.html
    Django 1.7.x 及以后的版本集成了 South 的功能，在修改models.py了后运行：
    python manage.py makemigrations
    python manage.py migrate

12.在项目根目录下，运行python manage.py runserver，Django会以127.0.0.1:8000这个默认配置启动开发服务器。
'''

import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "website.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError:
        # The above import may fail for some other reason. Ensure that the
        # issue is really that Django is missing to avoid masking other
        # exceptions on Python 2.
        try:
            import django
            print(django.get_version())
        except ImportError:
            raise ImportError(
                "Couldn't import Django. Are you sure it's installed and "
                "available on your PYTHONPATH environment variable? Did you "
                "forget to activate a virtual environment?"
            )
        raise
    execute_from_command_line(sys.argv)
